home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / bin / startx < prev    next >
Encoding:
Text File  |  2010-06-05  |  4.4 KB  |  230 lines

  1. #!/bin/sh
  2.  
  3. #
  4. # This is just a sample implementation of a slightly less primitive
  5. # interface than xinit.  It looks for user .xinitrc and .xserverrc
  6. # files, then system xinitrc and xserverrc files, else lets xinit choose
  7. # its default.  The system xinitrc should probably do things like check
  8. # for .Xresources files and merge them in, startup up a window manager,
  9. # and pop a clock and serveral xterms.
  10. #
  11. # Site administrators are STRONGLY urged to write nicer versions.
  12. #
  13.  
  14. unset DBUS_SESSION_BUS_ADDRESS
  15. unset SESSION_MANAGER
  16.  
  17.  
  18. userclientrc=$HOME/.xinitrc
  19. sysclientrc=/etc/X11/xinit/xinitrc
  20.  
  21.  
  22. userserverrc=$HOME/.xserverrc
  23. sysserverrc=/etc/X11/xinit/xserverrc
  24. defaultclient=/usr/bin/xterm
  25. defaultserver=/usr/bin/X
  26. defaultclientargs=""
  27. defaultserverargs=""
  28. defaultdisplay=":0"
  29. clientargs=""
  30. serverargs=""
  31.  
  32. enable_xauth=1
  33.  
  34.  
  35.  
  36. whoseargs="client"
  37. while [ x"$1" != x ]; do
  38.     case "$1" in
  39.     # '' required to prevent cpp from treating "/*" as a C comment.
  40.     /''*|\./''*)
  41.     if [ "$whoseargs" = "client" ]; then
  42.         if [ x"$client" = x ] && [ x"$clientargs" = x ]; then
  43.         client="$1"
  44.         else
  45.         clientargs="$clientargs $1"
  46.         fi
  47.     else
  48.         if [ x"$server" = x ] && [ x"$serverargs" = x ]; then
  49.         server="$1"
  50.         else
  51.         serverargs="$serverargs $1"
  52.         fi
  53.     fi
  54.     ;;
  55.     --)
  56.     whoseargs="server"
  57.     ;;
  58.     *)
  59.     if [ "$whoseargs" = "client" ]; then
  60.         clientargs="$clientargs $1"
  61.     else
  62.         # display must be the FIRST server argument
  63.         if [ x"$serverargs" = x ] && \
  64.          expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then
  65.         display="$1"
  66.         else
  67.         serverargs="$serverargs $1"
  68.         fi
  69.     fi
  70.     ;;
  71.     esac
  72.     shift
  73. done
  74.  
  75. # process client arguments
  76. if [ x"$client" = x ]; then
  77.     client=$defaultclient
  78.  
  79.     # if no client arguments either, use rc file instead
  80.     if [ x"$clientargs" = x ]; then
  81.         if [ -f "$userclientrc" ]; then
  82.             client=$userclientrc
  83.         elif [ -f "$sysclientrc" ]; then
  84.             client=$sysclientrc
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.         fi
  92.  
  93.         clientargs=$defaultclientargs
  94.     fi
  95. fi
  96.  
  97. # process server arguments
  98. if [ x"$server" = x ]; then
  99.     server=$defaultserver
  100.  
  101.     # if no server arguments or display either, use defaults
  102.     if [ x"$serverargs" = x -a x"$display" = x ]; then
  103.     # For compatibility reasons, only use xserverrc if there were no server command line arguments
  104.     if [ -f "$userserverrc" ]; then
  105.         server=$userserverrc
  106.     elif [ -f "$sysserverrc" ]; then
  107.         server=$sysserverrc
  108.     fi
  109.  
  110.     serverargs=$defaultserverargs
  111.     display=$defaultdisplay
  112.     fi
  113. fi
  114.  
  115. if [ x"$enable_xauth" = x1 ] ; then
  116.     if [ x"$XAUTHORITY" = x ]; then
  117.         XAUTHORITY=$HOME/.Xauthority
  118.         export XAUTHORITY
  119.     fi
  120.  
  121.     removelist=
  122.  
  123.     # set up default Xauth info for this machine
  124.  
  125.     # check for GNU hostname
  126.     if hostname --version > /dev/null 2>&1; then
  127.         if [ -z "`hostname --version 2>&1 | grep GNU`" ]; then
  128.             hostname=`hostname -f`
  129.         fi
  130.     fi
  131.  
  132.     if [ -z "$hostname" ]; then
  133.         hostname=`hostname`
  134.     fi
  135.  
  136.     authdisplay=${display:-:0}
  137.  
  138.     mcookie=`/usr/bin/mcookie`
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.     if test x"$mcookie" = x; then
  147.         echo "Couldn't create cookie"
  148.         exit 1
  149.     fi
  150.     dummy=0
  151.  
  152.     # create a file with auth information for the server. ':0' is a dummy.
  153.     xserverauthfile=`mktemp --tmpdir serverauth.XXXXXXXXXX`
  154.     trap "rm -f '$xserverauthfile'" HUP INT QUIT ILL TRAP KILL BUS TERM
  155.     xauth -q -f "$xserverauthfile" << EOF
  156. add :$dummy . $mcookie
  157. EOF
  158.  
  159.  
  160.  
  161.     serverargs=${serverargs}" -auth "${xserverauthfile}
  162.  
  163.  
  164.     # now add the same credentials to the client authority file
  165.     # if '$displayname' already exists do not overwrite it as another
  166.     # server man need it. Add them to the '$xserverauthfile' instead.
  167.     for displayname in $authdisplay $hostname$authdisplay; do
  168.         authcookie=`xauth list "$displayname" \
  169.         | sed -n "s/.*$displayname[[:space:]*].*[[:space:]*]//p"` 2>/dev/null;
  170.         if [ "z${authcookie}" = "z" ] ; then
  171.             xauth -q << EOF 
  172. add $displayname . $mcookie
  173. EOF
  174.         removelist="$displayname $removelist"
  175.         else
  176.             dummy=$(($dummy+1));
  177.             xauth -q -f "$xserverauthfile" << EOF
  178. add :$dummy . $authcookie
  179. EOF
  180.         fi
  181.     done
  182. fi
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195. xinit "$client" $clientargs -- "$server" $display $serverargs
  196.  
  197.  
  198.  
  199. retval=$?
  200.  
  201. if [ x"$enable_xauth" = x1 ] ; then
  202.     if [ x"$removelist" != x ]; then
  203.         xauth remove $removelist
  204.     fi
  205.     if [ x"$xserverauthfile" != x ]; then
  206.         rm -f "$xserverauthfile"
  207.     fi
  208. fi
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228. exit $retval
  229.  
  230.